/* 
 * Copyright 2009 Shared Object (www.sharedobject.ch)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */
package edos.prm.activity;

import edos.prm.artifact.Artifact;
import edos.prm.artifact.Attribute;
import edos.prm.util.Time;
import edos.prm.util.VersionNumber;

/**
 * The goal of an {@code Activity} is to manage process and project
 * {@code Artifact} objects.
 * <p>
 * The role of managing an {@code Artifact} is usually handled by an external
 * tool; the PRM uses an interface to represent the glue that binds this tool
 * to other project activities.
 * <p>
 * An {@code Activity} offers means to retrieve information about a tool
 * implementing the PRM.
 * 
 * @author Michel Pawlak, Ciaran Bryce
 * @version 1.0
 */
public interface Activity extends Artifact {

	/**
	 * Returns information about the implementation of the interface.
	 * 
	 * @return information about interface implementation.
	 */
	@Attribute
	public String getDescription();

	/**
	 * Returns information about the version of the tool.
	 * 
	 * @return A PRM version number.
	 */
	@Attribute
	public VersionNumber getVersion();

	/**
	 * Returns the creation date of the activity.
	 * 
	 * @return a Time object representing the creation date.
	 */
	@Attribute
	public Time getCreationDate();
}
